/* 存储的分类数据 */
import { topCategory } from '@/model/constants.js'
import { findAllCategoryAPI } from '@/api/category.js'

const state = () => ({
  // 如果默认是[]数组，看不见默认的9个分类，等你数据加载完毕才会看到。
  // 所以：根据常量数据来生成一个默认的顶级分类数据，不会出现空白（没数据的情况）
  topCategory: topCategory.map(item => ({ name: item }))
})

const mutations = {
  // 加载数据成功后需要修改list所以需要mutations函数
  SET_CATEGORY (state, headCategory) {
    state.topCategory = headCategory
  },
  SHOW (state, id) {
    state.topCategory.find(item => item.id === id).open = true
  },
  HIDE (state, id) {
    state.topCategory.find(item => item.id === id).open = false
  }
}

const actions = {
  // 需要向后台加载数据，所以需要actions函数获取数据
  async getAllCategory ({ commit }) {
    const result = await findAllCategoryAPI()
    result.map(item => (item.open = false))
    // 获取数据成功，提交mutations进行数据修改
    commit('SET_CATEGORY', result)
  },
  show ({ commit }, id) {
    commit('SHOW', id)
  },
  hide ({ commit }, id) {
    commit('HIDE', id)
  }
}
export default {
  namespaced: true,
  state,
  mutations,
  actions
}
